home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Modules / ctl / ctlscan.py < prev    next >
Text File  |  1996-04-12  |  2KB  |  69 lines

  1. # Scan <Controls.h>, generating ctlgen.py.
  2. import addpack
  3. addpack.addpack(':Tools:bgen:bgen')
  4.  
  5. from scantools import Scanner
  6. from bgenlocations import TOOLBOXDIR
  7.  
  8. def main():
  9.     input = "Controls.h"
  10.     output = "ctlgen.py"
  11.     defsoutput = TOOLBOXDIR + "Controls.py"
  12.     scanner = MyScanner(input, output, defsoutput)
  13.     scanner.scan()
  14.     scanner.close()
  15.     print "=== Done scanning and generating, now doing 'import ctlsupport' ==="
  16.     import ctlsupport
  17.     print "=== Done.  It's up to you to compile Ctlmodule.c ==="
  18.  
  19. class MyScanner(Scanner):
  20.  
  21.     def destination(self, type, name, arglist):
  22.         classname = "Function"
  23.         listname = "functions"
  24.         if arglist:
  25.             t, n, m = arglist[0]
  26.             if t in ("ControlHandle", "ControlRef") and m == "InMode":
  27.                 classname = "Method"
  28.                 listname = "methods"
  29.         return classname, listname
  30.  
  31.     def makeblacklistnames(self):
  32.         return [
  33.             'DisposeControl' # Implied by deletion of control object
  34.             'KillControls', # Implied by close of dialog
  35.             'SetCtlAction',
  36.             ]
  37.  
  38.     def makeblacklisttypes(self):
  39.         return [
  40.             'ProcPtr',
  41.             'ControlActionUPP',
  42.             'CCTabHandle',
  43.             'AuxCtlHandle',
  44.             ]
  45.  
  46.     def makerepairinstructions(self):
  47.         return [
  48.             ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
  49.              [("InBuffer", "*", "*")]),
  50.             
  51.             ([("void", "*", "OutMode"), ("long", "*", "InMode"),
  52.                                         ("long", "*", "OutMode")],
  53.              [("VarVarOutBuffer", "*", "InOutMode")]),
  54.             
  55.             # For TrackControl
  56.             ([("ProcPtr", "actionProc", "InMode")],
  57.              [("FakeType('(ControlActionUPP)0')", "*", "*")]),
  58.             ([("ControlActionUPP", "actionProc", "InMode")],
  59.              [("FakeType('(ControlActionUPP)0')", "*", "*")]),
  60.             
  61.             ([("ControlHandle", "*", "OutMode")],
  62.              [("ExistingControlHandle", "*", "*")]),
  63.             ([("ControlRef", "*", "OutMode")],    # Ditto, for Universal Headers
  64.              [("ExistingControlHandle", "*", "*")]),
  65.             ]
  66.  
  67. if __name__ == "__main__":
  68.     main()
  69.